Story5 IP과 이더넷 패킷 송수신

우리는 이제까지 TCP 담당 부분을 공부했다. 이제는 IP 담당 부분이 어떤 역할을 하는지 알아보려고 한다.

패킷의 기본

일단 패킷이 어떻게 구성되어있는지 살펴보자

위에가 실제 패킷과 유사하게 표현한 것이다.

아래는 이것을 택배에 비유한 것이다.

  • TCP/IP 패킷: 택배
  • IP Header: 택배에 붙은 라벨과 비슷
  • TCP Header + Data: 택배 내용물과 같다.

MAC Header는?

다음 목적지가 어디인지 적힌 것과 비슷한데, 택배로 예를 들면 인천 공장에서 서울 집으로 올 경우, 인천 허브에서 서울 허브로 택배가 이동할 것이라고 알리는 것이다.

실제 패킷도 IP 담당 부분에서 MAC 헤더와 IP 헤더를 붙이고 허브를 통해 목적지 방향에 있는 라우터에 전달한다.

이 다음 라우터의 MAC주소가 MAC 헤더에 들어간다.

다음 라우터로 가기 위해 허브로 패킷이 보내진다.

허브에는 패킷의 목적지를 판단하기 위한 표 같은 것이 있어서 패킷의 목적지를 판단해 중계한다.

라우터에는 IP용 표가 있어서 IP 헤더의 수신처와 결합해 다음은 어떤 라우터에 중계하면 좋을지가 결정된다. 이때 MAC 주소를 조사하고 MAC 헤더에 다시 바꾸어 쓴다.

이 과정을 반복해 목적지에 패킷을 전달한다.

2 패킷 송수신

IP 담당부분은다음두개의헤더를덧붙인다

  • MAC 헤더: 이더넷용헤더, MAC 주소를 쓴다.
  • P 헤더: IP용헤더, IP주소를 쓴다.

이때 IP가 처리하는 패킷은 TCP에서 만든 제어 패킷과 데이터 패킷을 분리해서 보지 않고 한 덩어리의 바이너리로 본다.

3 수신처 IP 주소를 기록한 IP 헤더

IP 헤더의 수신처 IP주소에는 통신 상대의 주소를 설정 송신처 IP 주소는 송신처가 되는 LAN 어댑터를 판단하여 주소를 설정

이때 상대를 판단하는 방법은 IP용 표를 사용해 다음 라우터를 결정한다. 이 표를 경로표라고 부른다.

칼럼 이름설명
Network Destination수신처 IP 주소와 비교해 일치하는 부분의 행을 찾아낸다.
Interface패킷을 송신하면 상대에게 패킷을 전해줄 수 있다는 의미이다.
Gateway다음 라우터의 IP주소가 기록되어있다.
NetmaskIP주소의 네트워크 번호와 경계를 결정하는 값
Protocol Number패킷이 어디에서 의뢰받은 것인지 번호로 표시(TCP, UDP 등)
  • 기본 게이트웨어: 넷마스크가 0.0.0.0으로 등록되어있는 행, 다른 곳에 일치하는 행이 없다면 이 행으로 해당하는 것으로 간주
  • Interface와 Gateway이 같을 경우 라우터에 중계하지 않고 수신처의 IP 주소의 기계에 직접 송신 가능

이더넷용 MAC 헤더

IP 담당 부분은 IP 헤더를 붙이고 MAC 헤더를 붙인다. MAC 헤더는 이더넷에서 사용하는 헤더로서 수신처나 송신처의 MAC 주소 등이 기록되어있다.

MAC 주소는 IP 주소와 다르게 몇 번지 몇 호 처럼 그룹화되어있지 않고 그 자체로 하나의 값이다.

프로토콜 번호와 비슷하게 이더 타입이라는 항목이 있는데 이것은 MAC 헤더 뒤의 내용물이 무엇인지를 나타낸다. IP나 ARP라는 프로토콜 소켓이며 각각에 대응하는 값이 기록된다.

이때 MAC 주소는 LAN 어댑터의 MAC 주소를 설정한다.

수신처의 MAC 주소는 상대를 모르기 때문에 조사를 해야하는데 이것은 경로표에 기록되어있다. Gateway 항목에 기록되어있는 값에서 상대를 판단한다. 여기에 IP주소는 적혀있지만 MAC 주소는 적혀있지 않기 때문에, IP주소로 MAC 주소를 찾아야한다.

5 ARP로 MAC 주소 조사

여기서 사용하는 것이 ARP이다. ARP의 개념은 이더넷에 연결된 전원에게 패킷을 전달하는 브로드캐스트 구조가 있을때, 이 구조를 이용해 찾는 IP 주소를 가진 전원에게 질문하고, 해당자가 MAC 주소를 알려주는 응답방식이다.

하지만 패킷을 보낼때마다 이 과정을 하면 ARP의 패킷이 불어나기 때문에, 한 번 조사한 결과는 ARP 캐시영역에 보존한다.

몇 분 정도 보관을 하고 삭제한다.

이렇게 찾은 MAC 주소를 MAC 헤더에 넣어 송신한다.

6 이더넷의 기본

예전에는 신호를 전원에게 전달하고 수신처 주소를 써놨기 때문에 수신처가 신호를 수신하고 나머지는 폐기했다. 트랜시버 케이블를 통해 신호를 보내 전체 트랜시버가 연결된 트렁크 케이블을 통해 신호가 전체로 전해졌다.

이 다음은 리피터 허브로 신호가 전체에 전해지는 것은 마찬가지 였다. 아래와 같은 형태로 바뀌었다.

  • 트랜시버 → 리피터 허브
  • 트랜시버 케이블 → 트위스트 페어 케이블

그리고 현대는 스위칭 허브를 통해 수신처 MAC 주소에 따라 목적지를 확인하고 패킷을 중계하기 때문에 신호가 원하는 상대에게만 흐른다.

수신처 MAC 주소, 송신처 MAC 주소, 이더 타입 이 세가지 성질은 변하지 않았다.

7 LAN 어댑터

LAN 어댑터의 ROM에는 전 세계에서 중복되지 않도록 일원화되어 관리되는 MAC 주소가 제조할때 기록된다. LAN어댑터에 기록된 MAC주소는 LAN드라이버가 MAC 회로에 설정